package br.com.foxinline.servico.titulodocumento;

import br.com.foxinline.modelo.titulodocumento.AtoTipoTituloDocumento;
import br.com.foxinline.modelo.titulodocumento.QualidadeTituloDocumento;
import br.com.foxinline.servico.ServicoGenerico;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.Query;

/**
 *
 * @author cadomeireles
 */
@Stateless
public class QualidadeTituloDocumentoServico extends ServicoGenerico<QualidadeTituloDocumento> {
    
    public QualidadeTituloDocumentoServico() {
        super(QualidadeTituloDocumento.class);
    }   

    @Override
    public void deletar(QualidadeTituloDocumento qualidade) {
        qualidade.setAtivo(false);
        super.atualizar(qualidade);
    }
    
    public List<QualidadeTituloDocumento> pesquisar(QualidadeTituloDocumento qualidade) {
        String sql = "select qualidade from QualidadeTituloDocumento qualidade where qualidade.ativo = true";
        
        if (qualidade.getDescricao() != null && !qualidade.getDescricao().isEmpty()) {
            sql += " and lower(qualidade.descricao) like '%" + qualidade.getDescricao().toLowerCase() + "%'";
        }        

        Query query = getEntityManager().createQuery(sql);
        return query.getResultList();
    }    

    public List<QualidadeTituloDocumento> autocompletar(String query){
        return buscarPeloNome(query);
    }

    public List<QualidadeTituloDocumento> buscarPeloNome(String query){
        List<QualidadeTituloDocumento> qualidades = getEntityManager().createQuery("select qualidade from " + QualidadeTituloDocumento.class.getSimpleName() + " qualidade where qualidade.ativo = true and lower(qualidade.descricao) like '%" + query.toLowerCase().trim() + "%'").getResultList();
        return qualidades;
    }

    public List<QualidadeTituloDocumento> autocompletar(String query, AtoTipoTituloDocumento atoTipo){
        return buscarPeloNome(query, atoTipo);
    }

    public List<QualidadeTituloDocumento> buscarPeloNome(String descricao, AtoTipoTituloDocumento atoTipo){

        String sql = "select qualidade from QualidadeTituloDocumento qualidade where qualidade.ativo = true and lower(qualidade.descricao) like '%" + descricao.toLowerCase().trim() + "%'";
        
        sql += " and qualidade.atoTipo = :atoTipo";
        
        Query query = getEntityManager().createQuery(sql);

        query.setParameter("atoTipo", atoTipo);
        
        return query.getResultList();
    }    
    
}
